<?php

/**
 * Classe représentant une actions de communication.
 * @author LESAGE Alexandre
 * @since 1 aôut 2013
 * @version 1.0
 */

class ActionDeCommunication
{
		/* Attributs */
	/**
	 * Identifiant de l'actions de communication.
	 * @var integer
	 */
	private $_id;
	/**
	 * Theme de l'actions de communication.
	 * @var Theme
	 */
	private $_theme;
	/**
	 * Titre de l'actions de communication.
	 * @var string
	 */
	private $_titre;
	/**
	 * Date du déroulement de l'actions de communication.
	 * @var string
	 */
	private $_date_deroulement;
	/**
	 * Identifiant de l'enseignant suiveur.
	 * @var int
	 */
	private $_enseignant;
	/**
	 * Commentaire sur l'actions de communication.
	 * @var Enseignant
	 */
	private $_commentaire;
	/**
	 * Etat de l'actions de communication.
	 * @var Etat
	 */
	private $_etat;

	/**
	 * Nombre d'étudiant maximum.
	 * @var int
	 */
	private $_nb_Etudiant_Max;

	/**
	 * Permet de savoir si on peut rattacher des forum à l'action de communication.
	 * @var boolean
	 */
	private $_groupableForum;
		/* Constructeurs & Destructeurs */
	public function __construct($id)
	{

	}


	/* Méthodes */
	/**
	 * Fonction permettant d'écrire un date de la forme JJ-MM-AAAA en AAAA-MM-JJ.
	 * @param string $date
	 * @return string
	 */
	private function putDateAAAAMMJJ($date)
	{
		$d = preg_split("-/-", $date);
		return $d[2]."-".$d[1]."-".$d[0];
	}

	/**
	 * Fonction permettant d'écrire un date de la forme AAAA-MM-JJ en JJ-MM-AAAA.
	 * @param string $date
	 * @return string
	 */
	private function putDateJJMMAAAA($date)
	{
		$d = preg_split("-/-", $date);
		return $d[0]."-".$d[1]."-".$d[2];
	}

	/**
	 * Verifie si une date est correcte.
	 * @param string $date
	 * @return boolean
	 */
	private function verifieDate($date)
	{
		$d = preg_split("-/-", $date);

		if(($d[1] > 0 && $d[1] <= 12) && ($d[0] > 0 && $d[0] <= 31) && ($d[2] > 0))
			return true;
		else
			return false;
	}

	/* Méthode Base de Données */
	/**
	 * Méthode static permettant de récupérer toutes les actions de communications de la base de données sous forme d'un tableau.
	 * @return $adc Tableau avec toutes les actions de communication de la base de données
	 */
	public function getAllADC()
	{
		// On se connecte  à la BDD
		$bdd = PDO2::getInstance();
		$donnees = $bdd->query(REQ_ALL_ADC); // On lance la requête
		$donnees = $donnees->fetchAll(); // On recupére toutes les données sous forme d'un tableau associatif

		foreach($d as $donnees)
		{
			$adc[] = new ActionDeCommunication($d[ID_ADC],new Theme($d[LIBELLE_THEME]), new Etat($d[LIBELLE_ETAT]), $d[TITRE_ADC], $d[DATE_ADC], new Enseignant($d[NOM_PROF], $d[PRENOM_PROF]), $d[COMMENTAIRE_ADC], $d[ETAT_ADC], $d[NOMBRE_ETUDIANT_ADC], $d[LOGIN_PROF], $d[CODE_THEME]);
		}

	}

	/* Getteurs & Setteurs */
	/**
	 * Fonction permettant de récupérer l'identifiant de l'action de communication.
	 * @access public
	 * @return int $_id
	 */
	public function get_id()
	{
		return $this->_id;
	}

	/**
	 * Fonction permettant de récupérer le theme de l'action de communication.
	 * @access public
	 * @return Theme $_theme
	 */
	public function get_theme()
	{
		return $this->_theme;
	}

	/**
	 * Met à jour le theme de l'action de communication
	 * @access public
	 * @param Theme $theme Le nouveau theme de l'action de communication.
	 */
	public function set_theme($theme)
	{

	}

	/**
	 * Fonction permettant de récupérer le titre de l'action de communication.
	 * @access public
	 * @return string $_titre Le titre de l'action de communicaition.
	 */
	public function get_titre()
	{
		return $this->_titre;
	}

	/**
	 * Met à jour le titre de l'action de communication.
	 * @param string $titre Le nouveau titre de l'action de communication.
	 */
	public function set_titre($titre)
	{
		if(is_empty($titre)) // Si $titre est vide, on afficher un message d'erreur.
			trigger_error('Le nouveau titre de l\'action de communication est vide.');
		else if(is_string($titre)) // Si $titre n'est pas un string, on afficher un message d'erreur.
			trigger_error('Le nouveau titre de l\'action de communication doit être une chaine de caractère !');
		else
			$this->_titre = $titre;
	}

	/**
	 * Fonction permettant de récupérer la date du déroulement de l'action de communication.
	 * @access public
	 * @return string $_date_deroulement La date du déroulement de l'action de communication.
	 */
	public function get_date_deroulement()
	{
		return $this->_date_deroulement;
	}

	/**
	 * Met à jour la date de déroulement de l'action de communication.
	 * La date sera enregistrer sous la forme AAAA-MM-JJ
	 * @access public
	 * @param string $date La nouvelle date
	 */
	public function set_date_deroulement($date)
	{
		$this->_date_deroulement = $date;
	}

	/**
	 * Fonction permettant de récupérer l'enseignant de l'action de communication.
	 * @access public
	 * @return Enseignant $_enseignant L'enseignant de l'action de communication.
	 */
	public function get_enseignant()
	{
		return $this->_enseignant;
	}

	/**
	 * Met à jour l'enseignant de l'action de communication.
	 * @access public
	 * @param Enseignant $enseignant Le nouveau enseignant de l'action de communication.
	 */
	public function set_enseignant($enseignant)
	{
	}

	/**
	 * Fonction permettant de récupérer le commentaire de l'action de communication.
	 * @access public
	 * @return string $_commentaire Le commentaire de l'action de communication.
	 */
	public function get_commentaire()
	{
		return $this->_commentaire;
	}

	/**
	 * Met à jour le commentaire de l'action de communication.
	 * @access public
	 * @param string $commentaire Le nouveau commentaire de l'action de communication.
	 */
	public function set_commentaire($commentaire)
	{
		if(is_empty($commentaire)) // Si $commentaire est vide, on afficher un message d'erreur.
			trigger_error('Le nouveau commentaire de l\'action de communication est vide.');
		else if(is_string($commentaire)) // Si $commentaire n'est pas un string, on afficher un message d'erreur.
			trigger_error('Le nouveau commentaire de l\'action de communication doit être une chaine de caractère !');
		else
			$this->_commentaire = $commentaire;
	}

	/**
	 * Fonction permettant de récupérer l'état de l'action de communication.
	 * @access public
	 * @return Etat $_etat L'état de l'actions de communication.
	 */
	public function get_etat()
	{
		return $this->_etat;
	}

	/**
	 * Met à jour l'état de l'action de communication.
	 * @access public
	 * @param string $etat le nouvel état de l'action de communication.
	 */
	public function set_etat($etat)
	{

	}

	/**
	 * Fonction permettant de récupérer le nombre d'étudiant maximum de l'action de communication.
	 * @access public
	 * @return int $_nb_Etudiant_Max Le nombre d'étudiant maximum de l'action de communication.
	 */
	public function get_nb_Etudiant_Max()
	{
		return $this->_nb_Etudiant_Max;
	}

	/**
	 * Met à jour le nombre d'étaudiant maximum de l'action de communication.
	 * @access public
	 * @param int $$nb_Etudiant_Max le nombre d'étudiant maximum de l'action de communication.
	 */
	public function set_nb_Etudiant_Max($nb_Etudiant_Max)
	{
		$this->_nb_Etudiant_Max;
	}

	/**
	 * Fonction permettant savoir si l'on peut ajouter des forum à l'action de communication.
	 * @access public
	 * @return boolean $_groupableForum
	 */
	public function is_GroupableForum()
	{
		return $this->_groupableForum;
	}

	/**
	 * Met à jour GroupableForum.
	 * @access public
	 * @param boolean $b
	 */
	public function set_GroupableForum($b)
	{
		$this->$_groupableForum = $b;
	}
}

?>